import java.util.PriorityQueue;
class Solution {
    public int lastStoneWeight(int[] stones) {
        // 自定义比较器
        // 它接受两个整数 a 和 b，并返回一个整数值，用于决定它们在优先队列中的顺序
        PriorityQueue<Integer> q = new PriorityQueue<>((a, b) -> b - a);
        // 将所有的元素放入堆里面
        for (int x : stones) {
            q.offer(x);
        }
        // 进行模拟
        while (q.size() > 1) {
            // 弹出第一个元素 最大的
            int a = q.poll();
            // 弹出第二个元素 第二大
            int b = q.poll();
            if (a > b) {
                q.offer(a - b);
            }
        }
        return q.isEmpty() ? 0 : q.peek();
    }
}